package cn.powerone.scm.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import cn.powerone.common.annotation.Excel;
import cn.powerone.common.core.domain.BaseEntity;

/**
 * 客户订单明细对象 scm_customer_order_items
 * 
 * @author PowerOne
 * @date 2025-07-04
 */
@Setter
@Getter
public class ScmCustomerOrderItems extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /**  */
    private Long itemId;

    /** 订单ID */
    @Excel(name = "订单ID")
    private Long orderId;

    /** 产品ID */
    @Excel(name = "产品ID")
    private Long productId;

    /** 项目产品ID */
    private Long projectProductId;

    /** 客户报价ID */
    private Long customerQuoteId;
    /** 供应商ID */
    @Excel(name = "供应商ID")
    private Long supplierId;

    /** 关联供应商报价单ID */
    @Excel(name = "关联供应商报价单ID")
    private Long supplierQuoteId;

    /** 供应商名称 */
    @Excel(name = "供应商名称")
    private String supplierName;

    /** 采购类型 */
    @Excel(name = "采购类型")
    private Long purchaseCategory;

    /** 需求类型 */
    @Excel(name = "需求类型")
    private Long demandType;

    /** 机种 */
    @Excel(name = "机种")
    private String model;

    /** 出厂编号 */
    @Excel(name = "出厂编号")
    private String manufactureNumber;

    /** 出厂子编号 */
    @Excel(name = "出厂子编号")
    private String manufactureSubNumber;

    /** 图号、型号 */
    @Excel(name = "图号、型号")
    private String drawingNumberModel;

    /** 版本 */
    @Excel(name = "版本")
    private String drawingVersion;

    /** 品名 */
    @Excel(name = "品名")
    private String productName;

    /** 材质 */
    @Excel(name = "材质")
    private String material;

    /** 尺寸 */
    @Excel(name = "尺寸")
    private String size;

    /** 规格 */
    @Excel(name = "规格")
    private String specification;

    /** 颜色 */
    @Excel(name = "颜色")
    private String color;

    /** 单价类型 */
    @Excel(name = "单价类型")
    private Long unitPriceType;

    /** 单价 */
    @Excel(name = "单价")
    private BigDecimal unitPrice;

    /** 数量 */
    @Excel(name = "数量")
    private BigDecimal quantity;

    /** 金额 */
    @Excel(name = "金额")
    private BigDecimal amount;

    /** 模具费 */
    @Excel(name = "模具费")
    private BigDecimal moldCost;

    /** 工装费 */
    @Excel(name = "工装费")
    private BigDecimal jigCost;

    /** 客户币种 */
    @Excel(name = "客户币种")
    private String customerCurrency;

    /** 客户币种汇率 */
    @Excel(name = "客户币种汇率")
    private BigDecimal customerCurrencyRate;

    /** 供应商币种 */
    @Excel(name = "供应商币种")
    private String supplierCurrency;

    /** 供应商币种汇率 */
    @Excel(name = "供应商币种汇率")
    private BigDecimal supplierCurrencyRate;

    /** 要求交期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "要求交期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date requestedDeliveryDate;

    /** 回复交期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "回复交期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date repliedDeliveryDate;

    /** 备注 */
    @Excel(name = "备注")
    private String remarks;

    /** 关联的产品信息 */
    private ScmProjectProducts scmProjectProducts;

    /** 订单编号 */
    private String orderCode;

    /** 图号 */
    private String drawingNumber;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("itemId", getItemId())
            .append("orderId", getOrderId())
            .append("productId", getProductId())
            .append("purchaseCategory", getPurchaseCategory())
            .append("demandType", getDemandType())
            .append("model", getModel())
            .append("manufactureNumber", getManufactureNumber())
            .append("manufactureSubNumber", getManufactureSubNumber())
            .append("drawingNumberModel", getDrawingNumberModel())
            .append("drawingVersion", getDrawingVersion())
            .append("productName", getProductName())
            .append("material", getMaterial())
            .append("size", getSize())
            .append("specification", getSpecification())
            .append("color", getColor())
            .append("unitPriceType", getUnitPriceType())
            .append("unitPrice", getUnitPrice())
            .append("quantity", getQuantity())
            .append("amount", getAmount())
            .append("moldCost", getMoldCost())
            .append("jigCost", getJigCost())
            .append("requestedDeliveryDate", getRequestedDeliveryDate())
            .append("repliedDeliveryDate", getRepliedDeliveryDate())
            .append("remarks", getRemarks())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }


}
